#绘制直方图
import matplotlib.pyplot as plt
#1.准备数据
#生成随机数据
import numpy as np


np.random.seed(42)#含义：设置随机数种子，确保每次运行结果一致
data = np.random.randn(2000)#含义：从标准正态分布中生成1000个随机数
#2.创建画布
plt.figure(figsize=(8, 6), dpi=120)
#3.绘制直方图
n,bins,patches=plt.hist(
    data,
    bins=30,
    #归一化
    density=True,
    #柱子颜色
    color='skyblue',
    #柱子透明度
    alpha=0.7,
    #边框宽度
    linewidth=0.5,
    edgecolor='black'
)
#叠加概率密度曲线
from scipy.stats import norm
mu,sigma=np.mean(data),np.std(data)
plt.plot(bins,1/(sigma*np.sqrt(2*np.pi))
         *np.exp(-(bins-mu)**2/(2*sigma**2)),
         linewidth=2,
         color='red',label='正态分布曲线')
#设置图表标题和标签
plt.title('正态分布数据直方图', fontsize=16, fontweight='bold', pad=20)
plt.xlabel('数值', fontsize=12)
plt.ylabel('频率密度', fontsize=12)
#设置图表网格
plt.grid(axis='y', linestyle=':', alpha=0.7)
#添加图例
plt.legend(fontsize=12)
# 4.避免乱码
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号
# 5.显示图表
plt.tight_layout()
plt.show()
